import Tools from '../../utils/modules/Tools'
//获取应用实例
const app = getApp()

Page({
  data: {
    popup_switch: false, 
    messagePush: '', // 用户是否接收消息推送
    class_id: '', // 活动ID
    repair_code: "", // 用户填写的邀请码
    contactNumber: '', // 联系获取邀请码
    repair_code_error: false, // 用户填写的邀请码是否错误（true：错了，false：还没填）
    invitation_code: '', // 邀请码
    isShow: false, // 登录弹窗 显示/隐藏 控制变量
    focus: false, // 搜索框 获得焦点/失去焦点 记录变量
    swiperImgs: [], // 轮播图列表
    companyList: [], // 企业读书列表
    sixItemsList: [], // 六项精进小组列表
    // sixItemsJoinTeam: [], // 六项精进报名且通过审核的小组列表
    studentsStudyList: [], // 塾生学习列表
    personalInfo: {}, // 用户个人信息
    fontSetSize: 'small', // 用户设置的字体大小（'small'：小，'middle'：中，'large'：大）
    activityList: [],
    thisPage: 1, // 当前分页页码
  },

  /**
   * 获取用户基本信息并登录
   */
  onGotUserInfo(e) {
    console.log(e, 'userInfoData')
    let _this = this
    if (e.detail.errMsg == 'getUserInfo:ok') {
      wx.showLoading({
        title: '登录中'
      })
      let wx_iv = e.detail.iv
      let encryptedData = e.detail.encryptedData
      // 获取微信小程序code
      wx.login({
        success: function (res) {
          let wx_code = res.code
          // 登录
          app.http({
            config: {
              url: '/api/User/wx_login',
              data: {
                wx_iv: wx_iv,
                encryptedData: encryptedData,
                wx_code: wx_code
              },
              method: 'POST'
            },
            isAuth: false
          }).then(res => {
            console.log(res, 'loginRes')
            // 将token存储到本地缓存
            wx.setStorageSync('token', res.data.data.token)
            wx.setStorageSync('userInfo', res.data.data)
            let timer = setTimeout(() => {
              wx.hideLoading()
              clearTimeout(timer)
            }, 100)
            /**
             * 设置token在本地缓存的存储时间
             */
            let timestamp = Date.parse(new Date()) // 当前时间（即登录时间）的时间戳（毫秒）
            // let expiration = timestamp + (3 * 24 * 3600000) // 缓存3天
            let expiration = timestamp + (332666 * 1000) // token有效时间，后端告诉的
            wx.setStorageSync('expiration', expiration)
            /**
             * 用户登录成功，得到token，再去获取这些需要token才能获取到数据的接口
             */
            _this.getCompanyActivity()
            _this.getSixItemsActivity()
            // _this.getSixItemsJoinTeam()
            _this.getStudentsStudy()
            _this.getPersonalInfo()
          }).catch(err => {
            console.log(err, 'loginErr')
            wx.hideLoading()
          });
        }
      })
    } else {
      console.log('用户拒绝权限')
    }
  },



  // 打开邀请码弹窗
  handleOpenPopup (e) {
    this.setData({
      popup_switch: true,
      class_id: e.currentTarget.dataset.class_id
    })
  },

  // 关闭邀请码弹窗
  handleClosePopup () {
    this.setData({
      popup_switch: false,
      repair_code: '',
      repair_code_error: false,
      class_id: ''
    })
  },

  // 获取填写邀请码
  getRepairCode (e) {
    this.setData({
      repair_code: e.detail.value
    })
  },

  // 发送验证邀请码
  handleSendInvitationCode (e) {
    console.log(this.data.repair_code)
    let token = wx.getStorageSync('token')
    app.http({
      config: {
        url: '/api/User/add_activity_register',
        data: {
          token,
          Invitation_code: this.data.repair_code,
          class_id: this.data.class_id
        },
        method: 'POST'
      },
      isAuth: true
    }).then(res => {
      console.log(res, 'sendCompanyCodeRes')
      this.setData({
        popup_switch: false,
      })
      this.getSixItemsActivity()
      wx.showModal({
        title: '提示',
        content: res.data.message,
        showCancel: false,
      })
    }).catch(err => {
      console.log(err, 'sendCompanyCodeErr')
      this.setData({
        repair_code_error: true
      })
    });
  },

  /**
   * 联系获取邀请码
   */
  getContactNumber () {
    let token = wx.getStorageSync('token')
    app.http({
      config: {
        url: '/api/User/phone',
        data: {
          token
        },
        method: 'POST'
      },
      isAuth: false
    }).then(res => {
      console.log(res, 'contactNumberRes');
      let contactNumber = res.data.data
      this.setData({
        contactNumber
      })
    }).catch(err => {
      console.log(err, 'contactNumberErr')
    })
  },

  /**
   * 搜索框获取焦点
   */
  handleOnFocus() {
    this.setData({
      focus: true
    })
  },

  /**
   * 搜索框失去焦点
   */
  handleSearch() {
    this.setData({
      focus: false
    })
  },

  /**
   * 获取轮播图列表
   */
  getSwiperImg() {
    app.http({
      config: {
        url: '/api/User/banner',
        method: 'GET'
      },
      isAuth: false
    }).then(res => {
      console.log(res, 'swiperRes');
      this.setData({
        swiperImgs: res.data.data
      })
    }).catch(err => {
      console.log(err, 'swiperErr')
    })
  },

  /**
   * 获取用户参加的活动列表
   */
  getActivityList () {
    let that = this
    let token = wx.getStorageSync('token')
    app.http({
      config: {
        url: '/api/User/my_activity_list',
        data: {
          token,
          // page: that.data.thisPage
        },
        method: 'POST'
      },
      isAuth: true
    }).then(res => {
      console.log(res, 'activityRes')
      let activityList = that.data.activityList == [] ? res.data.data.data : that.data.activityList.concat(res.data.data.data)
      that.setData({
        activityList
      })
      // if (that.data.thisPage < res.data.data.last_page) {
      //   let thisPage = that.data.thisPage + 1
      //   that.setData({
      //     thisPage
      //   })
      //   that.getActivityList()
      // }
    }).catch(err => {
      console.log(err, 'activityErr')
    });
  },

  /**
   * 获取当前用户对应企业的读书列表
   */
  getCompanyActivity() {
    let token = wx.getStorageSync('token')
    // console.log(token)
    app.http({
      config: {
        url: '/api/User/company_read_list',
        data: {
          token
        },
        method: 'POST'
      },
      isAuth: true
    }).then(res => {
      console.log(res, 'companyActivityRes')
      this.setData({
        companyList: res.data.data.data
      })
    }).catch(err => {
      console.log(err, 'companyActivityErr')
      if (err.data.code == 400) {
        this.setData({
          isShow: true
        })
      }
    })
  },

  /**
   * 获取六项精进列表
   */
  getSixItemsActivity() {
    let token = wx.getStorageSync('token')
    app.http({
      config: {
        url: '/api/User/class_list',
        data: {
          token
        },
        method: 'POST'
      },
      isAuth: true
    }).then(res => {
      console.log(res, 'sixItemsActivityRes')
      this.setData({
        sixItemsList: res.data.data.data
      })
    }).catch(err => {
      console.log(err, 'sixItemsActivityErr')
      if (err.data.code == 400) {
        this.setData({
          isShow: true
        })
      }
    })
  },

  /**
   * 获取六项精进我参加的小组（已报名且审核通过）
   */
  // getSixItemsJoinTeam() {
  //   let token = wx.getStorageSync('token')
  //   app.http({
  //     config: {
  //       url: '/api/User/my_activity_team',
  //       data: {
  //         token
  //       },
  //       method: 'POST'
  //     },
  //     isAuth: true
  //   }).then(res => {
  //     this.setData({
  //       sixItemsJoinTeam: res.data.data.data
  //     })
  //     console.log(res, 'sixItemsJoinRes')
  //   }).catch(err => {
  //     console.log(err, 'sixItemsJoinErr')
  //     if (err.data.code == 400) {
  //       this.setData({
  //         isShow: true
  //       })
  //     }
  //   })
  // },

  /**
   * 获取塾生学习列表
   */
  getStudentsStudy() {
    let token = wx.getStorageSync('token')
    app.http({
      config: {
        url: '/api/User/personal_read_list',
        data: {
          token
        },
        method: 'POST'
      },
      isAuth: true
    }).then(res => {
      console.log(res, 'studentsStudyRes')
      this.setData({
        studentsStudyList: res.data.data.data
      })
    }).catch(err => {
      console.log(err, 'studentsStudyErr')
      if (err.data.code == 400) {
        this.setData({
          isShow: true
        })
      }
    })
  },

  /**
   * 获取我的个人信息
   */
  getPersonalInfo() {
    let token = wx.getStorageSync('token')
    app.http({
      config: {
        url: '/api/User/personal_info',
        data: {
          token
        },
        method: 'POST'
      },
      isAuth: true
    }).then(res => {
      console.log(res, 'personalInfoRes')
      this.setData({
        personalInfo: res.data.data
      })
      wx.setStorageSync('identity_status', res.data.data.identity_status)
    }).catch(err => {
      console.log(err, 'personalInfoErr')
      if (err.data.code == 400) {
        this.setData({
          isShow: true
        })
      }
    })
  },

  /**
   * 授权订阅消息
   */
  requestSubscribe () {
    wx.requestSubscribeMessage({
      tmplIds: ['hquj3fHjiKfl83HWOvC-sa0IBhTlmnCksu9GYsgvFYA'],
      success (res) {
        // 成功回调
        console.log('订阅消息授权成功',res)
      },
      fail (err) {
        // 失败回调
        console.log('订阅消息授权失败', err)
      },
      complete (res) {
        // 结束回调
        console.log('订阅消息授权结束', res)
      }
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let _this = this;
    let timestamp = Date.parse(new Date()) // 当前时间的时间戳
    let expiration = wx.getStorageSync('expiration') // 本地缓存中token到期的时间戳
    if (expiration) {
      if (timestamp > expiration) {
        // token到期，清空本地缓存，并让用户重新授权登录
        wx.clearStorageSync()
        _this.setData({
          isShow: true
        })
      } else {
        // 用户token存在且未到期，再去获取这些需要token才能获取到数据的接口
        _this.getCompanyActivity()
        _this.getSixItemsActivity()
        // _this.getSixItemsJoinTeam()
        _this.getStudentsStudy()
        _this.getPersonalInfo()
      }
    } else {
      this.setData({
        isShow: true
      })
    }
    this.getSwiperImg()
    this.getContactNumber()
    let messagePush = wx.getStorageSync('messagePush')
    if (messagePush === '') {
      messagePush = true
      wx.setStorageSync('messagePush', messagePush)
    }
    console.log('messagePush', messagePush)
    this.setData({
      messagePush
    })
    // wx.clearStorageSync()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.getCompanyActivity()
    this.getSixItemsActivity()
    // this.getSixItemsJoinTeam()
    this.getStudentsStudy()
    this.getPersonalInfo()
    let fontSetSize = wx.getStorageSync('fontSetSize') // 本地缓存中用户设置的字体大小
    if (fontSetSize) {
      this.setData({
        fontSetSize
      })
    }
    this.setData({
      thisPage: 1,
      activityList: []
    }, () => {
      this.getActivityList()
    })
    if (this.data.messagePush) {
      wx.getSetting({
        withSubscriptions: true,
        success (res) {
          console.log('用户授权', res)
          if (!res.subscriptionsSetting.mainSwitch) {
            wx.showModal({
              title: '提示',
              content: '为了能及时提醒您打卡，需要您授权订阅消息',
              confirmText: '同意',
              cancelText: '拒绝',
              success: function (res) {
                if (res.confirm) {
                  // 调用订阅消息
                  console.log('用户点击确定')
                  // 调用订阅
                  _this.requestSubscribe()
                } else if (res.cancel) {
                  console.log('用户点击取消')
                  // 显示第二个弹说明一下
                  wx.showModal({
                    title: '提示',
                    content: '拒绝后您将无法获取打卡提醒通知',
                    confirmText: '知道了',
                    showCancel: false,
                    success: function (res) {
                    }
                  })
                }
              },
              fail (err) {
                console.log('获取用户授权失败', err)
              },
              complete (res) {
                // 结束回调
                console.log('获取用户授权结束', res)
              }
            })
          }
        }
      })
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})